Custom Field Naming Strategy তৈরি করা

Java Technologies - জ্যাকসন (Jackson) - Jackson এর সাথে Custom Naming Strategy ব্যবহার
165

Jackson ডিফল্টভাবে Java ফিল্ডগুলোর নাম JSON ফিল্ডের নামে ব্যবহার করে। তবে, অনেক সময় JSON ফিল্ডের নাম Java ফিল্ডের নামের সাথে মিল থাকে না বা অন্য রকম ফরম্যাটিং (যেমন: snake_case বা kebab-case) প্রয়োজন হয়। এ ক্ষেত্রে Custom Field Naming Strategy ব্যবহার করে ফিল্ডের নাম নিয়ন্ত্রণ করা যায়।

Jackson PropertyNamingStrategy বা PropertyNamingStrategies ক্লাস ব্যবহার করে ফিল্ড নাম পরিবর্তন করার কৌশল সরবরাহ করে। তবে, যদি আপনার প্রয়োজন আরও কাস্টমাইজড নিয়ন্ত্রণ, তাহলে আপনি নিজস্ব Naming Strategy তৈরি করতে পারেন।


Built-in Naming Strategies

Jackson-এর কয়েকটি বিল্ট-ইন Naming Strategy:

  1. SNAKE_CASE: ফিল্ডের নামকে snake_case ফরম্যাটে পরিবর্তন করে।
  2. UPPER_CAMEL_CASE: ফিল্ডের নামকে UpperCamelCase ফরম্যাটে পরিবর্তন করে।
  3. KEBAB_CASE: ফিল্ডের নামকে kebab-case ফরম্যাটে পরিবর্তন করে।
  4. LOWER_CASE: ফিল্ডের নামকে ছোট হাতের অক্ষরে পরিবর্তন করে।

Custom Field Naming Strategy তৈরি করার ধাপসমূহ

ধাপ ১: Custom Naming Strategy তৈরি

PropertyNamingStrategy ক্লাস Extend করে আপনার নিজস্ব লজিক প্রয়োগ করুন।

ধাপ ২: ObjectMapper-এ Custom Naming Strategy সেট করুন।


উদাহরণ: Custom Field Naming Strategy

১. Custom Naming Strategy তৈরি
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedField;
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;

public class CustomNamingStrategy extends PropertyNamingStrategy {
    @Override
    public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) {
        return "custom_" + defaultName; // ফিল্ডের নামের আগে "custom_" যোগ করা
    }

    @Override
    public String nameForGetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName) {
        return "custom_" + defaultName; // Getter মেথডের জন্য
    }

    @Override
    public String nameForSetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName) {
        return "custom_" + defaultName; // Setter মেথডের জন্য
    }
}

২. ObjectMapper-এ Naming Strategy সেট করা
import com.fasterxml.jackson.databind.ObjectMapper;

public class CustomFieldNamingExample {
    public static void main(String[] args) {
        try {
            // Custom Naming Strategy সেট করুন
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setPropertyNamingStrategy(new CustomNamingStrategy());

            // Object তৈরি
            User user = new User(1, "Rahim", "rahim@example.com");

            // Object থেকে JSON
            String json = objectMapper.writeValueAsString(user);
            System.out.println("Serialized JSON with Custom Naming: " + json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}

৩. আউটপুট:
{
  "custom_id": 1,
  "custom_name": "Rahim",
  "custom_email": "rahim@example.com"
}

Custom Naming Strategy উদাহরণ: Snake Case to Kebab Case

ফিল্ডের নামকে snake_case থেকে kebab-case-এ রূপান্তর করার জন্য Custom Naming Strategy:

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedField;

public class SnakeToKebabNamingStrategy extends PropertyNamingStrategy {
    @Override
    public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) {
        return defaultName.replace("_", "-"); // snake_case কে kebab-case-এ পরিবর্তন
    }
}
ObjectMapper-এ সেট করুন:
objectMapper.setPropertyNamingStrategy(new SnakeToKebabNamingStrategy());

Built-in Strategy ব্যবহার

উদাহরণ: SNAKE_CASE ব্যবহার

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.ObjectMapper;

public class SnakeCaseExample {
    public static void main(String[] args) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);

            User user = new User(1, "Rahim", "rahim@example.com");
            String json = objectMapper.writeValueAsString(user);
            System.out.println("Serialized JSON with SNAKE_CASE: " + json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
আউটপুট:
{
  "id": 1,
  "name": "Rahim",
  "email": "rahim@example.com"
}

Custom Naming Strategy-এর উপকারিতা

  1. Dynamic Control: JSON ফিল্ডের নাম কাস্টমাইজ করতে পারার ক্ষমতা।
  2. Integration: অন্য সিস্টেম বা API-এর ফিল্ড নামের সাথে Java ফিল্ডের নাম সামঞ্জস্য করা।
  3. Reusability: একবার Naming Strategy তৈরি করলে এটি বহু স্থানে ব্যবহার করা যায়।

  1. Custom Field Naming Strategy তৈরি করতে PropertyNamingStrategy Extend করে প্রয়োজনীয় লজিক লিখতে হয়।
  2. Jackson বিল্ট-ইন SNAKE_CASE, KEBAB_CASE, ইত্যাদি Naming Strategy প্রদান করে।
  3. Custom এবং Built-in Naming Strategy ObjectMapper-এ সহজেই যুক্ত করা যায়, যা ফিল্ড নামের কাস্টমাইজেশন সহজ করে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...